package com.yjc.sunnyweather

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.gyf.immersionbar.ImmersionBar
import com.yjc.sunnyweather.util.LogUtil


open class BaseActivity : AppCompatActivity() {

    private var tag = "BaseActivity"

    /**
     * 在Activity第一次被创建的时候
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        ActivityCollector.addActivity(this)

        //系统自带的标题栏隐藏掉
        supportActionBar?.hide()
        LogUtil.e(tag, "onCreate ${javaClass.simpleName}")

    }

    /**
     * 在Activity由不可见变为可见的时候
     */
    override fun onStart() {
        super.onStart()
        LogUtil.e(tag, "onStart ${javaClass.simpleName}" )
    }

    /**
     * 这个方法在Activity准备好和用户进行交互的时候调用。此时的Activity一定位于返回栈的栈顶，并且处于运行状态。
     */
    override fun onResume() {
        super.onResume()
        LogUtil.e(tag, "onResume ${javaClass.simpleName}")
    }

    /**
     * 这个方法在系统准备去启动或者恢复另一个Activity的时候调用。我们通常
     * 会在这个方法中将一些消耗CPU的资源释放掉，以及保存一些关键数据，但这个方法的执
     * 行速度一定要快，不然会影响到新的栈顶Activity的使用。
     */
    override fun onPause() {
        super.onPause()
        LogUtil.e(tag, "onPause ${javaClass.simpleName}")
    }

    /**
     * 这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区
     * 别在于，如果启动的新Activity是一个对话框式的Activity，那么onPause()方法会得到执
     * 行，而onStop()方法并不会执行。
     */
    override fun onStop() {
        super.onStop()
        LogUtil.e(tag, "onStop ${javaClass.simpleName}")
    }

    /**
     * 这个方法在Activity被销毁之前调用，之后Activity的状态将变为销毁状态。
     */
    override fun onDestroy() {
        super.onDestroy()
        LogUtil.e(tag, "onDestroy ${javaClass.simpleName}")
        ActivityCollector.removeActivity(this)
    }

    /**
     * 这个方法在Activity由停止状态变为运行状态之前调用，也就是Activity被重新启动了。
     */
    override fun onRestart() {
        super.onRestart()
        LogUtil.e(tag, "onRestart ${javaClass.simpleName}")
    }


}